const express = require('express');


const cors = require('cors');
const router = require('./router')

const swaggerJsdoc = require('swagger-jsdoc');
const swaggerUi = require('swagger-ui-express');

const app = express();

// Define Swagger options
const options = {
  definition: {
    openapi: '3.0.0',
    info: {
      title: 'Система сбора данных',
      version: '1.0.0',
      description: 'API для работы с системой сбора данных',
    },
    tags: [
      {
        name: 'Аутентификация и пользователи',
        description: 'Эндпоинты для аутентификации',
      },
      {
        name: 'Кормление',
        description: 'Эндпоинты для управления данными о кормлении',
      },
      {
        name: 'Оборудование',
        description: 'Эндпоинты для управления данными об оборудовании',
      },
      {
        name: 'Корм',
        description: 'Эндпоинты для управления данными об использованном корме',
      },
      {
        name: 'Измерения',
        description: 'Эндпоинты для управления данными об измерениях с датчиков',
      },
      {
        name: 'Популяции',
        description: 'Эндпоинты для управления данными об измерениях с датчиков',
      },
    ],
    "securityDefinitions": {
      "Bearer": {
        "type": "apiKey",
        "name": "Authorization",
        "in": "header",
        "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\""
      }
    },
  },
  apis: ['router.js', 'controllers/auth.js', 'controllers/equipment.js', 'controllers/feeding.js', 'controllers/food.js', 'controllers/indication.js',
  'controllers/population_growth.js', 'controllers/populations.js', 'controllers/sensors.js', 'controllers/types.js']
};

// Initialize Swagger-jsdoc
const specs = swaggerJsdoc(options);

// Serve Swagger UI
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(specs));

const PORT = 8000;

// Подключение к PostgreSQL

app.use(express.json());
app.use(cors())
app.use("/api", router)



app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`)
});
